#include <head.h>


// 自己写无名信号量的操作

// 自定义信号量
int num;

void * sem_func_1(void * val);


int main(int argc, char const *argv[])
{
    // 创建进程号
    pthread_t tid[10];
    int t_id_arr[10] = {1,2,3,4,5,6,7,8,9,10};

    // 初始化 自定义信号量
    num = 0;

    // 创建进程
    for (size_t i = 0; i < 10; i++)
    {
        pthread_create( &tid[i] , NULL ,  sem_func_1 , (void *)&t_id_arr[i]);
    }
    // 模拟主线程工作
    sleep(5);

    // 模拟V操作  => 对信号量 + 1
    num++;

    // 释放进程
    for (size_t i = 0; i < 10; i++)
    {
        pthread_join(tid[i] , NULL );
    }
    
    

    return 0;
}


void * sem_func_1(void * val)
{
    int t_id = *((int *)val);
    printf("我是线程 %d 我还没开始工作....\n" , t_id);

    while (!num);
    num--;    // P操作 等待sem 值 变成 非0  然后 将 sem--
    
    sleep(2);
    printf("我是线程 %d 我正在工作....\n" , t_id);

    num++;

    return NULL;
}








